//package org.chs.ts.batch.execute.step;
//
//
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
//import lombok.extern.slf4j.Slf4j;
//import org.chs.ts.batch.exception.TaskStepExecException;
//import org.chs.ts.batch.execute.BatchTaskExecute;
//import org.chs.ts.batch.pojo.BatchTradeCapitalTrans;
//import org.chs.ts.batch.pojo.BatchTradeCapitalTransReq;
//import org.chs.ts.batch.util.CommonUtil;
//import org.chs.ts.batch.util.TaskBuilder;
//import org.springframework.context.annotation.Lazy;
//import org.springframework.stereotype.Service;
//
//import javax.annotation.Resource;
//import java.util.List;
//
///**
// * @Compay 盛唐天行
// * @Author: wuwei
// * @Censor By wuwei
// * @Sence 2024/4/23 10:04
// * @Modify 2024/4/23 10:04
// * @Description 跑批平台-基础验证交易数据有效性
// * 未启用 taskParams 和 taskStepParams
// */
//@Slf4j
//@Service("TaskStepBasicValidateBusiness")
//@Lazy
//public class TaskStepBasicValidateBusiness implements BatchStepServiceBase<BatchTaskExecute, BatchExecResp, TaskStepExecException> {
//    //private static final long THREAD_SLEEP_MILLIS = 10000;
//    //private static final int MAX_WAITTING_COUNT = 6;
//    //private static final String TRANS_STATUS = "i";
//    //
//    //private static final String CAPITAL_STATUS = "0";
//    //
//    //@Resource
//    //private TaskBuilder taskBuilder;
//    //
//    //@Resource(name = "BatchTradeCapitalTransLogService")
//    //private IMwbpTradeCapitalTransLogService tradeCapitalTransLogService;
//    //
//    //@Resource
//    //private IMwbpTradeOrderInfoService tradeOrderInfoService;
//    //
//    //
//    //@Override
//    //public BatchExecResp execute(BatchTaskExecute BatchServiceBean) {
//    //    printRunningMsg(BatchServiceBean);
//    //
//    //    // 初始化参数
//    //    BatchExecResp resp = BatchServiceBean.initBatchExecResp();
//    //    BatchTradeCapitalTransReq batchTradeCapitalTransReq = taskBuilder.initBatchTradeCapitalTransReq(BatchServiceBean, false);
//    //
//    //
//    //    // 验证 当前是否存在 未完结的交易
//    //    resp = checkTransIsFinish(resp, batchTradeCapitalTransReq);
//    //    if (resp.getRtnCode().equals(RetCode.FAILED)) return resp;
//    //
//    //    // 验证 资金流水记账状态和三方系统交易状态 是否存在初始状态
//    //    resp = checkTradeCapitalIsFinish(resp, batchTradeCapitalTransReq);
//    //    if (resp.getRtnCode().equals(RetCode.FAILED)) return resp;
//    //
//    //    // 验证 数据完整性
//    //    resp = checkDataIntegrity(resp, batchTradeCapitalTransReq);
//    //    return resp;
//    //
//    //}
//    //
//    //private BatchExecResp checkDataIntegrity(BatchExecResp resp, BatchTradeCapitalTransReq request) {
//    //
//    //    List<BatchTradeCapitalTrans> batchTradeCapitalTransList = tradeCapitalTransLogService.batchTradeCapitalList(request);
//    //    // 资金流水非空
//    //    if (!batchTradeCapitalTransList.isEmpty()) {
//    //        for (BatchTradeCapitalTrans item : batchTradeCapitalTransList) {
//    //            if (tradeOrderInfoService.list(new LambdaQueryWrapper<MwbpTradeOrderInfo>().eq(MwbpTradeOrderInfo::getTransSeqNo,
//    //                    item.getTransSeqNo()).or().eq(MwbpTradeOrderInfo::getRevokeChannelSeqNo, item.getTransSeqNo())).isEmpty()) {
//    //                resp.setRtnDesc("根据资金流水表[mwbp_trade_capital_trans_log]中间业务交易流水号[trans_seq_no]未关联订单表[mwbp_trade_order_info" +
//    //                        "]撤单通讯流水[revoke_channel_seq_no]或请求方交易流水号[channel_seq_no]信息！trans_seq_no -> " + item.getTransSeqNo());
//    //                resp.setRtnCode(RetCode.FAILED);
//    //                break;
//    //            }
//    //        }
//    //    }
//    //    return resp;
//    //}
//    //
//    //public void printRunningMsg(BatchTaskExecute batchServiceBean) {
//    //    // 输出 运行参数信息
//    //    CommonUtil.showRunningMsg(this.getClass().getSimpleName(), "execute", batchServiceBean.getTaskParams(), batchServiceBean.getTaskStepParams());
//    //    // 当前方法 在 未启用 taskParams 和 taskStepParams 调用
//    //    CommonUtil.invalidParamMsg(this.getClass().getSimpleName(), "execute", batchServiceBean.getTaskParams(),
//    //            batchServiceBean.getTaskStepParams());
//    //}
//    //
//    //
//    //private BatchExecResp checkTradeCapitalIsFinish(BatchExecResp resp, BatchTradeCapitalTransReq request) {
//    //
//    //
//    //    request.setCapitalStatus(CAPITAL_STATUS);
//    //
//    //    boolean result = true;
//    //
//    //    if (getTradeCapitalTransLogCount(request) > 0) {
//    //        resp.setRtnDesc("资金流水表(mwbp_trade_capital_trans_log) 存在交易状态(capital_status)为0");
//    //        result = false;
//    //    }
//    //
//    //    resp.setRtnCode(result ? RetCode.SUCCESS : RetCode.FAILED);
//    //    return resp;
//    //}
//    //
//    //
//    ///**
//    // * 验证 当前是否存在 未完结的交易
//    // */
//    //private BatchExecResp checkTransIsFinish(BatchExecResp resp, BatchTradeCapitalTransReq request) {
//    //
//    //
//    //    request.setTransState(TRANS_STATUS);
//    //
//    //    boolean result = true;
//    //    int i = 0;
//    //    while (getTradeCapitalTransLogCount(request) > 0) {
//    //        try {
//    //            Thread.sleep(THREAD_SLEEP_MILLIS);
//    //            // 最大等待时间
//    //            if (++i > MAX_WAITTING_COUNT) {
//    //                result = false;
//    //                break;
//    //            }
//    //        } catch (InterruptedException e) {
//    //            log.info("TaskStepBasicValidateBusiness -> checkTransIsFinish :" + e.getMessage());
//    //        }
//    //    }
//    //
//    //    // 20230208 add 验证资金流水 是否存在 capital_deal_status = ‘i’
//    //    if (!result) {
//    //        resp.setRtnDesc("交易流水表(mwbp_trade_log) 存在交易状态(trans_state)为i");
//    //    }
//    //    resp.setRtnCode(result ? RetCode.SUCCESS : RetCode.FAILED);
//    //    return resp;
//    //}
//    //
//    ///**
//    // * 获取贵金属交易流水数据条数
//    // *
//    // * @param request 跑批对象
//    // * @return long
//    // */
//    //private long getTradeCapitalTransLogCount(BatchTradeCapitalTransReq request) {
//    //    List<BatchTradeCapitalTrans> batchTradeCapitalTransList = tradeCapitalTransLogService.batchTradeCapitalList(request);
//    //    return batchTradeCapitalTransList.size();
//    //}
//    //
//    //@Override
//    //public void rollback(BatchTaskExecute BatchServiceBean) throws TaskStepExecException {
//    //
//    //}
//}
